﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Commerce.Base.Ubl
{
    public class Item
    {
        private List<DataType.Text> description;
        private DataType.Quantity packQuantity;
        private DataType.Numeric packSizeNumeric;
        private DataType.Name name;
        private DataType.Text additionalInformation;
        private List<DataType.Text> keyword;
        private List<DataType.Name> brandName;
        private List<DataType.Name> modelName;
        private BuyersItemIdentification buyersItemIdentification;
        private ItemIdentification sellersItemIdentification;
        private ItemIdentification manufacturersItemIdentification;
        private ItemIdentification standardItemIdentification;
        private ItemIdentification catalogueItemIdentification;
        private ItemIdentification additionalItemIdentification;
        private List<CommodityClassification> commodityClassification;

        public List<DataType.Text> Description
        {
            get { return description; }
            set { description = value; }
        }

        public DataType.Quantity PackQuantity
        {
            get { return packQuantity; }
            set { packQuantity = value; }
        }

        public DataType.Numeric PackSizeNumeric
        {
            get { return packSizeNumeric; }
            set { packSizeNumeric = value; }
        }

        public DataType.Name Name
        {
            get { return name; }
            set { name = value; }
        }

        public DataType.Text AdditionalInformation
        {
            get { return additionalInformation; }
            set { additionalInformation = value; }
        }

        public List<DataType.Text> Keyword
        {
            get { return keyword; }
            set { keyword = value; }
        }

        public List<DataType.Name> BrandName
        {
            get { return brandName; }
            set { brandName = value; }
        }

        public List<DataType.Name> ModelName
        {
            get { return modelName; }
            set { modelName = value; }
        }

        public BuyersItemIdentification BuyersItemIdentification
        {
            get { return buyersItemIdentification; }
            set { buyersItemIdentification = value; }
        }

        public ItemIdentification SellersItemIdentification
        {
            get { return sellersItemIdentification; }
            set { sellersItemIdentification = value; }
        }

        public ItemIdentification ManufacturersItemIdentification
        {
            get { return manufacturersItemIdentification; }
            set { manufacturersItemIdentification = value; }
        }

        public ItemIdentification StandardItemIdentification
        {
            get { return standardItemIdentification; }
            set { standardItemIdentification = value; }
        }

        public ItemIdentification CatalogueItemIdentification
        {
            get { return catalogueItemIdentification; }
            set { catalogueItemIdentification = value; }
        }

        public ItemIdentification AdditionalItemIdentification
        {
            get { return additionalItemIdentification; }
            set { additionalItemIdentification = value; }
        }

        public List<CommodityClassification> CommodityClassification
        {
            get { return commodityClassification; }
            set { commodityClassification = value; }
        }
        
        public Item(DataType.Name name, ItemIdentification sellersItemIdentification, CommodityClassification commodityClassification)
        {
            this.name = name;
            this.sellersItemIdentification = sellersItemIdentification;
            this.commodityClassification = new List<CommodityClassification>();
            this.commodityClassification.Add(commodityClassification);
        }
    }
}
